На вход программы поступает последовательность из N целых положительных чисел. Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре не важен). Необходимо определить количество пар, для которых произведение элементов делится на 26.
В первой строке входных данных задаётся количество чисел N (1 ≤ N ≤ 60000). В каждой из последующих N строк записано одно целое положительное число, не превышающее 10000. В качестве результата программа должна напечатать одно число: количество пар, в которых произведение элементов кратно 26.
В ответе укажите значение искомой суммы для файла.
Добавлено: 20.04.26 20:39
Ответ: 199360639
Неоптимальное решение на Python:
f = open("embed.txt")
n = f.readline()
a = [int(line) for line in f.readlines()]
k = 0
for i in range(len(a)-1):
for j in range(i+1, len(a)):
if a[i] * a[j] % 26 == 0:
k += 1
print(k)Оптимальное решение на Python:
import sys
sys.setrecursionlimit(1000000)
f = open("embed.txt")
n = f.readline()
a = [int(line) for line in f.readlines()]
A2 = [el for el in a if el % 2 == 0 and el % 13 != 0]
A13 = [el for el in a if el % 13 == 0 and el % 2 != 0]
A26 = [el for el in a if el % 26 == 0]
def fact(n):
if n == 0:
return 1
return n * fact(n-1)
pari26 = (len(a) - len(A26)) * len(A26)
pari = fact(len(A26))/(fact(len(A26)-2)*fact(2))
print(pari + pari26 + len(A2)*len(A13))Автор - rubygem17
None